package com.oa.service;

import com.oa.pojo.Dept;
import com.oa.pojo.Option;
import com.oa.pojo.PageBean;
import com.oa.utils.EntityException;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface DeptService {
    // 获取所有部门信息
    PageBean<Dept> getAll(@Param("page") int page, @Param("limit") int limit);

    // 根据ID获取一个部门信息
    Dept getOneById(@Param("deptId") String deptId);

    // 新增部门
    int addDept(Dept dept);

    // 修改部门
    int updateDept(Dept dept);

    // 删除部门
    int delDept(@Param("deptId") String deptId) throws EntityException;

    // 根据部门ID获取部门领导ID
    String getDeptLeaderID(@Param("deptId") String deptId);

    // 根据部门ID获取上级部门的部门ID
    String getHigherLevelDeptId(@Param("deptId") String deptId);

    List<Option> getDeptOptions();

    void saveDept(Map<String,String> map) throws EntityException;

    /**
     * 更新hasSub
     * 先查找所有的部门的parentId是否为当前部门的ID
     * 是，则将HasSub设为1
     * 否，则将HasSub设为0
     */
    int updateHasSub(@Param("deptId") String deptId, @Param("hasSub") String hasSub);
}
